package com.example.blog.service;

import com.example.blog.entity.User;
import com.example.blog.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

/**
 * 用户服务类，处理用户相关的业务逻辑
 * 包括用户注册、登录和查询等功能
 */
/* 修改时间：2024-04-21 16:20:00 */
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private PasswordEncoder passwordEncoder;

    /**
     * 用户注册方法
     * 将用户密码进行BCrypt加密后存储到数据库
     * @param user 待注册的用户信息
     * 
     *  修改时间：2024-04-21 16:20:00 
     */
    public void register(User user) {
        user.setPassword(user.getPassword()); // 明文存储（测试用）
        // 原加密方式：user.setPassword(passwordEncoder.encode(user.getPassword()));
        userMapper.register(user);
    }

    /**
     * 用户登录方法
     * 验证用户名和密码是否匹配
     * @param user 待验证的用户信息
     * @return 登录是否成功
     * 
     *  修改时间：2024-04-21 16:20:00 
     */
    public boolean login(User user) {
        User existingUser = userMapper.findByUsername(user.getUsername());
        if (existingUser != null) {
            System.out.println("前端传入的明文密码：" + user.getPassword());
            System.out.println("数据库中存储的加密密码：" + existingUser.getPassword());
            boolean matches = user.getPassword().equals(existingUser.getPassword()); // 明文比对（测试用）
            // 原加密验证：passwordEncoder.matches(user.getPassword(), existingUser.getPassword())
            System.out.println("密码验证结果：" + matches);
            return matches;
        }
        return false;
    }
    
    /**
     * 根据用户名查询用户信息
     * @param username 用户名
     * @return 用户信息，如果未找到则返回null
     */
    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }
}